﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SanFranciscoModel.Docente;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Intermedias;
using SanFranciscoModel.Materia;

namespace SanFrancisco
{
    public partial class ModificarDesempeñoDocente : Form
    {
        int _DNI;
        List<Curso> ListCurso = new List<Curso>();
        List<Materia> ListMateria = new List<Materia>();
        List<Docente> ListDocente = new List<Docente>();
        List<SanFranciscoModel.Docente.DesempeñoDocente> ListDesempeñoDocente = new List<SanFranciscoModel.Docente.DesempeñoDocente>();

        public ModificarDesempeñoDocente(int dni)
        {
            _DNI = dni;
            InitializeComponent();
        }

        private void ModificarDesempeñoDocente_Load(object sender, EventArgs e)
        {
            txtDNI.Text = _DNI.ToString();

            CargarNotas();
            CargarCurso();

            CursoXMateriaXDocente CursoXMateriaXDocente = new CursoXMateriaXDocente();
            CursoManager CursoManager = new CursoManager();
            //CursoManager.getCursoXMateriaXDocenteByIDCursoIDMateria(
        }

        private void CargarNotas()
        {
            int i;
            for (i = 1; i < 11; i++)
            {
                cmbNotaConducta.Items.Add(i.ToString());
            }
        }

        private void CargarCurso()
        {


            DocenteManager DocenteManager = new SanFranciscoModel.Docente.DocenteManager();
            SanFranciscoModel.Docente.DesempeñoDocente DesempeñoDocente = new SanFranciscoModel.Docente.DesempeñoDocente();
            
            CursoManager CursoManager = new CursoManager();
            

            ListDesempeñoDocente = DocenteManager.getDesempeñoDocenteByDNI(_DNI);

            if (ListDesempeñoDocente.Count == 0)
            {
                MessageBox.Show("El Docente no tiene ningun desempeño cargado para ningun curso ni ninguna materia");
                this.Close();
            }
            else
            {

                ListCurso.Clear();
                ListMateria.Clear();

                bool flag = false;

                foreach (SanFranciscoModel.Docente.DesempeñoDocente ds in ListDesempeñoDocente)
                {
                    if (flag == false)
                    {
                        ListCurso.Add(CursoManager.getCursoActualbyId(ds.idCurso));
                        flag = true;
                    }

                    if (!ListCurso.Contains(CursoManager.getCursoActualbyId(ds.idCurso)))
                    {
                        foreach (Curso c in ListCurso)
                        {
                            if (c.idCurso!=ds.idCurso)
                                ListCurso.Add(CursoManager.getCursoActualbyId(ds.idCurso));
                        }
                    }
                        
                }


                cmCurso.DisplayMember = "NombreCurso";
                cmCurso.ValueMember = "idCurso";
                cmCurso.DataSource = ListCurso;

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (cmbNotaConducta.SelectedItem == null)
            {
                MessageBox.Show("Debe seleccionar una Calificacion!");
            }
            else
            {

                DocenteManager DocenteManager = new SanFranciscoModel.Docente.DocenteManager();

                string aclaraciones = "";
                if (txtAclaraciones.Text.Trim() != "") { aclaraciones = txtAclaraciones.Text; }

                if (DocenteManager.ExisteDesempenoDocente(_DNI, (int)cmCurso.SelectedValue, (int)cmbMateria.SelectedValue) == false)
                {
                    DocenteManager.guardarDesempeñoDocente(_DNI, (int)cmCurso.SelectedValue, int.Parse(cmbNotaConducta.Text), (int)(cmbMateria.SelectedValue), aclaraciones);
                    MessageBox.Show("Desempeño cargado con exito");
                    this.Close();
                }
                else
                {
                    MessageBox.Show("El Docente ya tiene un desempeño guardada para este curso y esta materia");
                    this.Close();
                }
            }
        }

        private void cmCurso_SelectedIndexChanged(object sender, EventArgs e)
        {

            MateriaManager MateriaManager = new MateriaManager();

            List<Materia> ListMateria2 = new List<Materia>();

            bool flag = false;

            foreach (SanFranciscoModel.Docente.DesempeñoDocente ds in ListDesempeñoDocente)
            {

                if (flag == false)
                {
                    ListMateria.Add(MateriaManager.getMateriasByIdMateria(ds.idMateria));
                    flag = true;
                }

                if (!ListMateria.Contains(MateriaManager.getMateriasByIdMateria(ds.idMateria)))
                {
                    List<Materia> m = new List<Materia>();
                    foreach (Materia c in ListMateria)
                    {
                        if (c.idMateria != ds.idMateria)
                        {
                            m.Add(MateriaManager.getMateriasByIdMateria(ds.idMateria));
                        }
                            
                    }
                    
                }
            }

            cmbMateria.DisplayMember = "Materia1";
            cmbMateria.ValueMember = "idMateria";
            cmbMateria.DataSource = ListMateria;

        }

        private void cmbMateria_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        }

}
